package gui.util;

import java.util.ArrayList;
import java.util.List;

import model.Usuario;

public class TableModelUsuario extends GenericTableModel<Usuario> {
	private static final long serialVersionUID = 1L;
	
	private String[] columnNames = { "Usuario", "Data Bloqueio", "Tipo Bloqueio" };
	private ArrayList<Usuario> dados;

	public TableModelUsuario() {
		dados = new ArrayList<Usuario>();
	}

	public TableModelUsuario(List<Usuario> usuarios) {
		this();
		setData(usuarios);
	}

	@Override
	public String getColumnName(int col) {
		return columnNames[col];
	}

	public String[] getColumnNames() {
		return columnNames;
	}

	@Override
	public void setData(List<Usuario> Usuarios) {
		this.dados.clear();
		this.dados.addAll(Usuarios);
		super.fireTableDataChanged();
	}

	@Override
	public Usuario getValueAt(int row) {
		return dados.get(row);
	}

	@Override
	public int indexOf(Usuario entity) {
		return dados.indexOf(entity);
	}

	@Override
	public void clear() {
		this.dados.clear();
		super.fireTableDataChanged();
	}

	@Override
	public void remove(Usuario entity) {
		dados.remove(entity);
		super.fireTableDataChanged();
	}

	@Override
	public void add(Usuario entity) {
		dados.add(0, entity);
		super.fireTableDataChanged();
	}

	@Override
	public boolean contains(Usuario entity) {
		return dados.contains(entity);
	}

	public int getRowCount() {
		return dados.size();
	}

	public int getColumnCount() {
		return columnNames.length;
	}

	public Object getValueAt(int rowIndex, int columnIndex) {
		Usuario usuario = dados.get(rowIndex);
		switch (columnIndex) {
		case 0:
			return usuario.getNome();
		case 1:
			return usuario.getDataStatus();
		case 2:
			return usuario.getStatus();
		}
		return null;
	}

	@Override
	public List<Usuario> list() {
		return dados;
	}

	@Override
	public void updateItem(int idx, Usuario entity) {
		dados.set(idx, entity);
		super.fireTableDataChanged();
	}
}